package com.edfu.core.coursemgt.service.api;

import java.util.List;

import com.edfu.core.coursemgt.vo.Course;
import com.edfu.core.coursemgt.vo.CourseOfferingInstance;
import com.edfu.core.coursemgt.vo.Enrollment;
import com.edfu.core.util.Response;

public interface ICourseMgtService {
	
	public Response addCourse(Course course);
	public Response updateCourse(Course course);
	public Response deleteCourse(String courseCode);
	public Response addCourseInSemesterForBranch(String courseCode, String branchCode, String semesterCode);
	public Response removeCourseFromSemesterForBranch(String courseCode, String semesterCode, String branchCode);
	public Response assignTeacherToCourse(String userId, String courseCode, String branchCode);
	public Response assignTeacherToCourse(String userId, String courseCode, String semesterCode, String branchCode);
	public Response assignTeacherToBranch(String userId, String branchCode);
	
	public Response associateCourseOfferingToCourse(String courseOfferingCode, String courseCode);
	public List<CourseOfferingInstance> getCourseOfferingInstancesCurrentlyTaughtByMe(String userId);
	public List<CourseOfferingInstance> getAllCourseOfferingInstancesAuthoredByMe(String userId);
	public List<CourseOfferingInstance> getCourseOfferingInstancesCurrentlyTaughtToMe(String userId);
	public Response teachCourseOffering(CourseOfferingInstance courseOfferingInstance);

	public Response removeMember(String batchMemberId, String batchCode);
	public Response enrollUserToMeeting(Enrollment enrollment);
	public Response removeUserFromMeeting(String userId, String meetingCode);
	
}
